package LeetCode;

/**
 * 278. 第一个错误的版本
 * @author 豆包LU
 * @date 2023/4/11 15:11
 */
// 假设有一个外部接口 bool isBadVersion(version) 可以用来判断版本号是否出错
public class FirstBadVersion{
    public int firstBadVersion(int n) {
        int left = 1; // 左边界
        int right = n; // 右边界

        while (left < right) {
            int mid = left + (right - left) / 2; // 取中间版本号

            if (isBadVersion(mid)) {
                // 如果中间版本号是错误的，则错误的版本号在左侧
                right = mid;
            } else {
                // 如果中间版本号是正确的，则错误的版本号在右侧
                left = mid + 1;
            }
        }

        return left; // 最终 left 的值就是第一个错误的版本号
    }

    private boolean isBadVersion(int mid) {
        return true;
    }
}

